package presentacion;

import javax.swing.JFrame;
import negocio.*;

public class SingletonControlador {

	/** atributos **/
	private static SingletonControlador _instancia = null;
	FactoriaSA   	 _factoria;
	SAGeneral 	 	 _saGeneral;
	SADirector 	 	 _saDirector;
	SAPublicidad 	 _saPublicidad;
	SAMantenimiento  _saManteniemiento;
	SAAdministrativo _saAdministrativo;
	SASecretaria _saSecretaria;
	
	/** Metodos **/
	public static SingletonControlador getInstancia() {
		if ( _instancia == null)
			_instancia =  new SingletonControlador();
		return _instancia;
	}
	
	public void evento (Evento evento,  Object datos) { // posible inclusion de JFrame
		
		switch (evento) {
			//Administrativo
		case A_CARGA_CUENTAS :
			_saAdministrativo = _factoria.getInstancia().creaSAAdministrativo();
			_saAdministrativo.getDatosCuentas((TransferAdministrativo)datos);
			break;
		case A_NUEVA_CUENTA :
			_saAdministrativo = _factoria.getInstancia().creaSAAdministrativo();
			_saAdministrativo.nuevaCuenta((TransferAdministrativo)datos);
		break;
		case A_GET_LISTA_PETICION_MATERIAL :
			_saAdministrativo = _factoria.getInstancia().creaSAAdministrativo();
			_saAdministrativo.getDatosPeticiones((TransferAdministrativo)datos);
			break;
		case A_VALIDA_PETICION :
			_saAdministrativo = _factoria.getInstancia().creaSAAdministrativo();
			_saAdministrativo.setPeticionValidate((TransferAdministrativo)datos);
			break;
		case A_CARGA_PRESUPUESTOS :
			_saAdministrativo = _factoria.getInstancia().creaSAAdministrativo();
			_saAdministrativo.getDatosPresupuestos((TransferAdministrativo)datos);
			break;
		case A_NUEVO_PRESUPUESTO :
			_saAdministrativo = _factoria.getInstancia().creaSAAdministrativo();
			_saAdministrativo.nuevoPresupuesto((TransferAdministrativo)datos);
			break;
		case A_CARGA_GRAFICOS :
			_saAdministrativo = _factoria.getInstancia().creaSAAdministrativo();
			_saAdministrativo.getDatosGraficos((TransferAdministrativo)datos);
			break;
		case A_CARGA_PERSONAL :
			_saAdministrativo = _factoria.getInstancia().creaSAAdministrativo();
			_saAdministrativo.getDatosUsuarios((TransferAdministrativo)datos);
			break;
			//General
		case GENERAL_GET_DATOS_USUARIO :
			_saGeneral = _factoria.getInstancia().creaSAGeneral();
			_saGeneral.getDatosUsuario((TransferGeneral)datos);
			break;
		case GENERAL_ACTUALIZAR_CORREOS :
			_saGeneral = _factoria.getInstancia().creaSAGeneral();
			_saGeneral.actualizarCorreos((TransferGeneral)datos);
			break;
		case GENERAL_ACTUALIZAR_PERSONAL :
			_saGeneral = _factoria.getInstancia().creaSAGeneral();
			_saGeneral.actualizarPersonal((TransferGeneral)datos);
			break;
		case GENERAL_NUEVO_CORREO :
			_saGeneral = _factoria.getInstancia().creaSAGeneral();
			_saGeneral.nuevoCorreo((TransferGeneral)datos);
			break;
		case GENERAL_LEER_CORREO :
			_saGeneral = _factoria.getInstancia().creaSAGeneral();
			_saGeneral.leerCorreo((TransferGeneral)datos);
			break;
		case GENERAL_MARCAR_LEIDO_CORREO :
			_saGeneral = _factoria.getInstancia().creaSAGeneral();
			_saGeneral.marcarLeidoCorreo((TransferGeneral)datos);
			break;
			
		case GENERAL_LOGIN:
			_saGeneral = _factoria.getInstancia().creaSAGeneral();
			_saGeneral.login((TransferGeneral)datos);
			break;
		case GENERAL_NEW_PASS:
			_saGeneral = _factoria.getInstancia().creaSAGeneral();
			_saGeneral.newPass((TransferGeneral)datos);
			break;
			//Director

		case DIRECTOR_GET_LISTA_PERSONAL :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.getListaPersonal((TransferDirector)datos);
			break;
		case DIRECTOR_GET_LISTA_IDIOMAS :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.getListaIdiomas((TransferDirector)datos);
			break;

		case DIRECTOR_INSERTAR_PERSONAL:
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.insertarPersonal((TransferDirector)datos);
			break;

		case DIRECTOR_GET_LISTA_CURSOS :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.getListaCursos((TransferDirector)datos);
			break;

		case DIRECTOR_BAJA_PERSONAL :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.bajaPersonal((TransferDirector)datos);
			break;

		case DIRECTOR_GET_LISTA_PROFESORES_POR_IDIOMA :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.getListaProfesoresPorIdioma((TransferDirector)datos);
			break;
		case DIRECTOR_GET_LISTA_EPACIOS :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.getListaEspacios((TransferDirector)datos);
			break;
		case DIRECTOR_INSERTAR_IDIOMA :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.setIdioma((TransferDirector)datos);
			break;
		case DIRECTOR_INSERTAR_ESPACIO :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.setEspacio((TransferDirector)datos);
			break;
		case DIRECTOR_INSERTAR_CURSO :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.setCurso((TransferDirector)datos);
			break;
		case DIRECTOR_GET_HORARIO :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.getHorario((TransferDirector)datos);
			break;
		case DIRECTOR_INSERTA_HORARIO :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.setHorario((TransferDirector)datos);
			break;

		case DIRECTOR_GET_LISTA_PRESUPUESTOS :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.getListaPresupuestos((TransferDirector)datos);
			break;
		case DIRECTOR_RESOLVER_ESTRATEGIA:
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.resolverEstrategia((TransferDirector)datos);
			break;
		case DIRECTOR_GET_LISTA_ESTRATEGIAS :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.getListaEstrategias((TransferDirector)datos);
			break;
		case DIRECTOR_GET_LISTA_TAREAS :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.getListaTareas((TransferDirector)datos);
			break;
		case DIRECTOR_INSERTAR_TAREA :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.insertarTarea((TransferDirector)datos);
			break;
		case DIRECTOR_GET_LISTA_INCIDENCIAS :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.getListaIncidencias((TransferDirector)datos);
			break;
		case DIRECTOR_GET_TIPOS_INCIDENCIAS :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.getListaTiposIncidencias((TransferDirector)datos);
			break;
		case DIRECTOR_GET_TIPOS_RESOLUCION_INCIDENCIAS :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.getListaTiposResolucionIncidencias((TransferDirector)datos);
			break;
		case DIRECTOR_RESOLVER_INCIDENCIA :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.resolverIncidencia((TransferDirector)datos);
			break;
		case DIRECTOR_GET_LISTA_NORMA_CONVIVENCIA :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.getListaNormas((TransferDirector)datos);
			break;
		case DIRECTOR_INSERTAR_TIPO_INCIDENCIA :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.insertarTipoIncidencia((TransferDirector)datos);
			break;
		case DIRECTOR_INSERTAR_TIPO_RESOLUCION_INCIDENCIA :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.insertarTipoResolucionIncidencia((TransferDirector)datos);
			break;
		case DIRECTOR_INSERTAR_NORMA :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.insertarNorma((TransferDirector)datos);
			break;
		case DIRECTOR_BORRAR_CURSO :
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.borrarCurso((TransferDirector)datos);
			break;
		case DIRECTOR_RESOLVER_PRESUPUESTO:
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.resolverPresupuesto((TransferDirector)datos);
			break;
		case DIRECTOR_BORRAR_ESPACIO:
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.borrarEspacio((TransferDirector)datos);
			break;
		case DIRECTOR_ACTUALIZAR_DATOS:
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.actualizarDatos((TransferDirector)datos);
			break;
		case DIRECTOR_GET_DATOS:
			_saDirector = _factoria.getInstancia().creaSADirector();
			_saDirector.getDatos((TransferDirector)datos);
			break;

		
		
		
			
			//Publicidad
		case PUBLI_NUEVA_ESTADISTICA:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.nuevaEstadistica((TransferPublicidad)datos);
			break;
			
		case PUBLI_ELIMINAR_ESTADISTICA:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.eliminarEstadistica( (TransferPublicidad) datos);
			break;
			
		case PUBLI_CHECK_DAT_ESTADISTICA:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.checkEstadistica((TransferPublicidad)datos);
			break;
			
		case PUBLI_CARGA_ESTADISTICAS:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.cargaEstadisticas((TransferPublicidad)datos);
			break;
		
		case PUBLI_CARGA_DATOS_ESTADISTICA:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.cargaDatosEstadistica((TransferPublicidad)datos);
			break;
			
		case PUBLI_GUARDA_ESTADISTICA:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.guardaEstadistica((TransferPublicidad) datos);
			break;
			
		case PUBLI_CARGA_TAREAS: //carga todas las tareas
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.cargaTareas((TransferPublicidad)datos);
			break;
			
		case PUBLI_GET_DESCRIPCION_TAREA: //carga la descripcion de una sola tarea
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.cargaDescripTarea((TransferPublicidad)datos);
			break;
			
		case PUBLI_ACTUALIZAR_TAREAS:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.cargaTareas((TransferPublicidad)datos);
			break;
			
		case PUBLI_MODIF_TAREA: 
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.modificaTarea((TransferPublicidad)datos);
			break;
			
		case PUBLI_CALCULA_EST:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.calculaEstadistica((TransferPublicidad)datos);
			break;
			
		case PUBLI_PETICION_MATERIAL:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.nuevaPeticionMaterial((TransferPublicidad) datos);
			break;
			
		case PUBLI_CARGA_MATERIAL:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.cargaMaterial((TransferPublicidad) datos);
			break;
		case PUBLI_CARGA_NOTAS:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.cargarNotas((TransferPublicidad) datos);
			break;
			
		case PUBLI_NUEVA_NOTA:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.nuevaNota((TransferPublicidad) datos);
			break;
			
		case PUBLI_CONSULTA_NOTA:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.consultaNota((TransferPublicidad) datos);
			break;
			
		case PUBLI_BORRA_NOTA:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.borraNota((TransferPublicidad) datos);
			break;
			
		case PUBLI_MODIF_NOTAS:
			_saPublicidad = _factoria.getInstancia().creaSAPublicidad();
			_saPublicidad.modifEstadoNota((TransferPublicidad) datos);
			break;
			
		//mantenimiento
		case MANTE_FICHAR:
			_saManteniemiento = _factoria.getInstancia().creaSAMantenimeinto();
			_saManteniemiento.Fichar((TransferMantenimiento)datos);
			break;
		case MANTE_PETICION:
			_saManteniemiento = _factoria.getInstancia().creaSAMantenimeinto();
			_saManteniemiento.getPeticiones((TransferMantenimiento)datos);
			break;
		case MANTE_ELECTRONICO:
			_saManteniemiento = _factoria.getInstancia().creaSAMantenimeinto();
			_saManteniemiento.getPeticionesElectronico((TransferMantenimiento)datos);
			break;
		case MANTE_ESPACIOS:
			_saManteniemiento = _factoria.getInstancia().creaSAMantenimeinto();
			_saManteniemiento.getEspacios((TransferMantenimiento)datos);
			break;
			
		case MANTE_CAMBIAESPACIOS:
			_saManteniemiento = _factoria.getInstancia().creaSAMantenimeinto();
			_saManteniemiento.setDescEspacio((TransferMantenimiento)datos);
			break;
			
		case MANTE_RESPONDE_PETRECURSO:
			_saManteniemiento = _factoria.getInstancia().creaSAMantenimeinto();
			_saManteniemiento.ResponderPetElectronico((TransferMantenimiento)datos);
			break;
		case MANTE_REVISION:
			_saManteniemiento = _factoria.getInstancia().creaSAMantenimeinto();
			_saManteniemiento.listaRevisionMat((TransferMantenimiento)datos);
			break;
			
		case MANTE_CANTMAT:
			_saManteniemiento = _factoria.getInstancia().creaSAMantenimeinto();
			_saManteniemiento.getInfoMat((TransferMantenimiento)datos);
			break;
		case MANTE_IDMAT:
			_saManteniemiento = _factoria.getInstancia().creaSAMantenimeinto();
			_saManteniemiento.getIdMaterial((TransferMantenimiento)datos);
			break;
		case MANTE_PETREPOSMATERIAL:
			_saManteniemiento = _factoria.getInstancia().creaSAMantenimeinto();
			_saManteniemiento.insertPeticionReposicion((TransferMantenimiento)datos);
			break;
		case MANTE_LISTAMATERIAL:
			_saManteniemiento = _factoria.getInstancia().creaSAMantenimeinto();
			_saManteniemiento.listaMateriales((TransferMantenimiento)datos);
			break;
		case MANTE_INSERTREVISION:
			_saManteniemiento = _factoria.getInstancia().creaSAMantenimeinto();
			_saManteniemiento.insertRevisionMaterial((TransferMantenimiento)datos);
			break;
			
		case MANTE_BORRARPETMATERIAL:
			_saManteniemiento = _factoria.getInstancia().creaSAMantenimeinto();
			_saManteniemiento.responderPeticionMaterial((TransferMantenimiento)datos);
			break;
			
			
		//secretaria			
		case SECRE_PET_MATERIAL: 
			_saSecretaria = _factoria.getInstancia().creaSASecretaria();
			_saSecretaria.nuevaPetMaterial((TransferSecretaria)datos);
			break;
			
		case SECRE_CARGA_MATERIAL:
			_saSecretaria = _factoria.getInstancia().creaSASecretaria();
			_saSecretaria.cargaMaterial((TransferSecretaria)datos);
			break;
			
		case SECRE_AUSALUMNO:
			_saSecretaria = _factoria.getInstancia().creaSASecretaria();
			_saSecretaria.listaAusAlumnos((TransferSecretaria)datos);
			break;
		
		case SECRE_RECUSALUMNO:
			_saSecretaria = _factoria.getInstancia().creaSASecretaria();
			_saSecretaria.listarecuperaciones((TransferSecretaria)datos);
			break;
			
		case SECRE_MODIFICA_CURSO:
			_saSecretaria = _factoria.getInstancia().creaSASecretaria();
			_saSecretaria.modifrecuperaciones((TransferSecretaria)datos);
			break;
			
		case SECRE_SUPLENCIAS:
			_saSecretaria = _factoria.getInstancia().creaSASecretaria();
			_saSecretaria.listaSuplencias((TransferSecretaria)datos);
			break;
		case SECRE_BORRA_AVISADOS:
			_saSecretaria = _factoria.getInstancia().creaSASecretaria();
			_saSecretaria.elimavisados((TransferSecretaria)datos);
			break;
		case SECRE_CREAR_CORREO:
			_saSecretaria = _factoria.getInstancia().creaSASecretaria();
			_saSecretaria.creacor((TransferSecretaria)datos);
			break;
			
			
			
			
			
			
			
			
			
		}
	}
	
	// director secretario administrativo publicidad limpieza 
	

}
